Many businesses and other enterprises nowadays store vast amounts of data in databases, often using commercially available database platforms in conjunction with software applications capable of accessing and processing the data to extract meaningful information therefrom in support of various business processes. For example, software applications for enterprise resource planning, customer relationship management, supplier relationship management, supply chain management, and product lifecycle management are widely used across many industries. To extend the range of uses for their business applications and thereby grow their customer base, business-application vendors often enable their customers to adjust the applications to their particular needs. One approach for providing such extensibility is to allow customers to directly modify or extend the source code of an application. In a larger suite of interacting applications, this can, however, cause incompatibilities between the customized application and other applications if the software vendor implements updates to the original software. To avoid this problem, an alternative approach involves modeling “enhancement points” in the original software by facilitating modifications to the source code in various designated places and within well-defined parameters. By pre-defining the range of possible modifications and guaranteeing that certain aspects of the modeled enhancement points and their interactions with the other software components remain unaltered during subsequent changes to the application as a whole, the vendor can ensure the interoperability of vendor-provided updates with the customer's enhancements.
With a growing need for real-time data access and increasing amounts of data, a trend has emerged to move data-processing functionality closer towards the database to reduce the frequency with which the database is accessed by external programs. This “code push-down” can be accomplished through the use of database procedures that are executed within the database itself. Database procedures, however, are limited in the types of operations they can perform. Furthermore, databases typically do not provide for the extensibility of database procedures.